import {constantRoutes } from '@/router'
import {getRolePermission}  from '@/api/permission'
import Layout from '@/layout'

const state = {
  routes: [],
  addRoutes: []
}

const mutations = {
  SET_ROUTES: (state, routes) => {
    state.addRoutes = routes
    state.routes = constantRoutes.concat(routes)
  }
}

export function generaMenu(routes, data) {
  //data挨个遍历
data.forEach(item => {
    //path不为空的话，就新建一个对象，装数据
    console.log("!!!"+item.name);
  if (item.name !== '') {
      //这个就仿照目录的机构，搭建
      
    const menu = {
      path: `/${item.name}`,//item.path,
      redirect: '',
      children: [],
      meta: {   // 使用 title 和 icon 创建 meta 对象
        title: item.title,
        icon: item.icon
      },
      name:item.name
    }
    //遍历子标签，并加入到主目录的children中去
    // 判断是否有子标签
    if (item.children && Array.isArray(item.children) && item.children.length > 0) {
      // 遍历子标签，并加入到主目录的 children 中去
      item.children.forEach(childItem => {
        const menu2 = {
          path: `${childItem.name}`,// path: childItem.path,
         // component: () => import('@'+childItem.component),
          component: (resolve) => require([`@/page${childItem.component}`], resolve),
          name: childItem.name,
          meta: {   // 使用 title 和 icon 创建 meta 对象
            title: childItem.title,
            icon: childItem.icon
          }
        }
        // 加入到主目录的 children 中去
        menu.children.push(menu2)
        menu.component= Layout
      })
    }
    console.log(menu);
    //追加
    routes.push(menu)
  }
})  
console.log(routes);
}
const actions = {
  //获取路由信息
   generateRoutes({ commit }, roleId) {//3  roleId:3
    return new Promise(async(resolve) => {
      let accessedRoutes=[]//定义当前路由信息
      //请求后端获取权限信息  异步问题
     await  getRolePermission({roleId:roleId}).then(response => {
        const {data} =response;
        //组装生成路由信息  accessedRoutes
        //accessedRoutes=createRoutes(data)
         generaMenu(accessedRoutes,data)
        commit('SET_ROUTES', accessedRoutes)
        console.log(accessedRoutes)
        resolve(accessedRoutes)
      });
    })
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
